const { src, dest, watch, series } = require('gulp');
const uglify = require('gulp-uglify');
const sass = require('gulp-sass')(require('sass'));
const concat = require('gulp-concat');

// 定义任务：压缩合并 JS
function scripts() {
  return src('src/js/*.js')       // 读取源文件
    .pipe(concat('bundle.min.js')) // 合并为 bundle.min.js
    .pipe(uglify())                // 压缩 JS
    .pipe(dest('dist/js'));        // 输出到目录
}

// 定义任务：编译 Sass
function sassTask() {
  return src('src/scss/*.scss')
    .pipe(sass().on('error', sass.logError)) // 编译 Sass
    .pipe(dest('dist/css'));
}

// 定义任务：文件监听
function watchTask() {
  watch('src/js/*.js', scripts);
  watch('src/scss/*.scss', sassTask);
}

// 定义默认任务（运行命令 `gulp` 时执行）
exports.default = series(scripts, sassTask, watchTask);

// 单独任务导出（可运行 `gulp 任务名`）
exports.scripts = scripts;
exports.sass = sassTask;